/*{
"CATEGORIES": [
"Color Effect"
],
"CREDIT": "by VIDVOX",
"INPUTS": [
{
"NAME": "inputImage",
"TYPE": "image"
},
{
"DEFAULT": 0,
"MAX": 1,
"MIN": -1,
"NAME": "intensity",
"TYPE": "float"
}
],
"ISFVSN": "2",
"PASSES": [
{
"TARGET": "pass1"
},
{
"TARGET": "pass2"
},
{
"TARGET": "pass3"
}
]
}
*/
#if __VERSION__ <= 120
varying vec2 left_coord;
varying vec2 right_coord;
varying vec2 above_coord;
varying vec2 below_coord;
varying vec2 lefta_coord;
varying vec2 righta_coord;
varying vec2 leftb_coord;
varying vec2 rightb_coord;
#else
in vec2 left_coord;
in vec2 right_coord;
in vec2 above_coord;
in vec2 below_coord;
in vec2 lefta_coord;
in vec2 righta_coord;
in vec2 leftb_coord;
in vec2 rightb_coord;
#endif
float gray(vec4 n)
{
return (n.r + n.g + n.b)/3.0;
}
void main()
{
vec4 final = vec4(0.0);
if (PASSINDEX == 0) {
vec4 color = IMG_THIS_PIXEL(inputImage);
vec4 colorL = (IMG_NORM_PIXEL(inputImage, left_coord));
vec4 colorR = (IMG_NORM_PIXEL(inputImage, right_coord));
vec4 colorA = (IMG_NORM_PIXEL(inputImage, above_coord));
vec4 colorB = (IMG_NORM_PIXEL(inputImage, below_coord));
vec4 colorLA = (IMG_NORM_PIXEL(inputImage, lefta_coord));
vec4 colorRA = (IMG_NORM_PIXEL(inputImage, righta_coord));
vec4 colorLB = (IMG_NORM_PIXEL(inputImage, leftb_coord));
vec4 colorRB = (IMG_NORM_PIXEL(inputImage, rightb_coord));
final = color - color * intensity * (8.0*gray(color) - colorL - colorR - colorA - colorB - colorLA - colorRA - colorLB - colorRB);
final.a = color.a;
}
else if (PASSINDEX == 1) {
vec4 color = IMG_THIS_PIXEL(pass1);
vec4 colorL = (IMG_NORM_PIXEL(pass1, left_coord));
vec4 colorR = (IMG_NORM_PIXEL(pass1, right_coord));
vec4 colorA = (IMG_NORM_PIXEL(pass1, above_coord));
vec4 colorB = (IMG_NORM_PIXEL(pass1, below_coord));
vec4 colorLA = (IMG_NORM_PIXEL(pass1, lefta_coord));
vec4 colorRA = (IMG_NORM_PIXEL(pass1, righta_coord));
vec4 colorLB = (IMG_NORM_PIXEL(pass1, leftb_coord));
vec4 colorRB = (IMG_NORM_PIXEL(pass1, rightb_coord));
final = (1.0 - abs(intensity)) * color + abs(intensity) * (colorL + colorR + colorA + colorB + colorLA + colorRA + colorLB + colorRB) / 8.0;
final.a = color.a;
}
else if (PASSINDEX == 2) {
vec4 color = IMG_THIS_PIXEL(pass2);
vec4 colorL = (IMG_NORM_PIXEL(pass2, left_coord));
vec4 colorR = (IMG_NORM_PIXEL(pass2, right_coord));
vec4 colorA = (IMG_NORM_PIXEL(pass2, above_coord));
vec4 colorB = (IMG_NORM_PIXEL(pass2, below_coord));
vec4 colorLA = (IMG_NORM_PIXEL(pass2, lefta_coord));
vec4 colorRA = (IMG_NORM_PIXEL(pass2, righta_coord));
vec4 colorLB = (IMG_NORM_PIXEL(pass2, leftb_coord));
vec4 colorRB = (IMG_NORM_PIXEL(pass2, rightb_coord));
final = color - color * intensity * (8.0*gray(color) - colorL - colorR - colorA - colorB - colorLA - colorRA - colorLB - colorRB);
final.a = color.a;
}
gl_FragColor = final;
}